package com.xinzhitong.www.service;

import com.xinzhitong.www.exception.CommentException;
import com.xinzhitong.www.exception.CompanyException;
import com.xinzhitong.www.exception.CompanyPictureException;
import com.xinzhitong.www.exception.PostException;
import com.xinzhitong.www.pojo.Company;
import com.xinzhitong.www.utils.MyPageInfo;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 公司服务
 *
 * @author 徐鑫
 */
public interface CompanyService {

    /**
     * 通过id获取公司信息
     *
     * @param id 公司id
     * @return 公司信息
     * @throws CompanyException 公司异常
     */
    Company getCompanyInfo(Integer id) throws CompanyException;

    /**
     * 通过id获取公司图片
     *
     * @param id 公司id
     * @return 图片链接数组
     */
    String[] getCompanyPictures(Integer id) throws CompanyPictureException;

    /**
     * 通过id获取公司岗位
     *
     * @param id       公司id
     * @param pageNo   页码
     * @param pageSize 页大小
     * @return 公司岗位列表
     * @throws PostException 岗位异常
     */
    MyPageInfo getPostsOfCompanyOf(Integer id, Integer pageNo, Integer pageSize) throws PostException;

    /**
     * 评论公司
     *
     * @param companyId 公司id
     * @param text      评论文本
     * @throws CompanyException 公司异常
     */
    void commentCompanyOf(Integer companyId, String text) throws CompanyException;

    /**
     * 获取公司评论
     *
     * @param companyId 公司id
     * @param pageNo    页码
     * @param pageSize  页大小
     * @return 公司评论列表
     * @throws CommentException 评论异常
     */
    MyPageInfo getCommentsOf(Integer companyId, Integer pageNo, Integer pageSize);

    /**
     * 获取企业类型
     *
     * @return 企业类型列表
     */
    Set<String> getCompanyType();

    /**
     * 获取合作企业概览
     *
     * @param pageNo   页码
     * @param pageSize 页大小
     * @return 合作企业概览
     */
    List<Map<String, Object>> getCompanyView(Integer pageNo, Integer pageSize);

    /**
     * 获取所属行业列表
     *
     * @return 所属行业列表
     */
    Set<String> getIndustry();

}
